The present invention relates to distributed computing systems, methods and computer program products, and more particularly, to systems, methods and computer program products for providing web services.
Web services are self-contained, self-describing, modular applications that can be published, located, and invoked across the Web. Web services perform functions that can be anything from simple requests to complicated business processes. Once a web service is deployed, other applications (and other web services) can discover and invoke the deployed service.
Web services may be informational or transactional, i.e., some services provide information of interest to the requestor while other services may actually lead to the invocation of business processes. Examples of publicly available web services today include stock quote services, services to retrieve news from web news sources, and currency conversion services.
Web services are typically deployed on the web by service providers. Service brokers may act as clearinghouses for services. Service brokers may act as matchmakers between service providers and service requestors, by helping service providers and service requesters find each other. Typically, a service requester uses an application programming interface (API) to ask the service broker about the services it needs. When the service broker returns results, the service requestor can use those results to bind to a particular service.
There are three common web services operations. Publishing and unpublishing involve advertising services to a registry (publishing) or removing those entries (unpublishing). The service provider contacts the service broker to publish or unpublish a service. A find operation is performed by service requestors and service brokers together. The service requestors describe the kinds of services they're looking for, and the service brokers deliver results that best match the request. A bind operation takes place between the service requester and the service provider. The two parties negotiate as appropriate so the requestor can access and invoke services of the provider.
Web services may be based on the eXtensible Markup Language (XML) standard data format and data exchange mechanisms, which provide both flexibility and platform independence. With web services, requesters typically do not need to know about the underlying implementation of web services, making it easy to integrate heterogeneous business processes.
Often, services are described by WSDL (Web Service Description Language) WSDL documents that are stored at web nodes. A WSDL document may be stored in numerous ways, such as in a file, in a DB2 XML Registry/Repository (such as the DB2 XRR(XML Registry/Repository)), or in a DB2 based UDDI Registry. UDDI (Universal Description, Discovery, Integration) is a protocol for describing web services such that interested parties may easily discover them. Specifications for this registry and use of WSDL in the registry are available currently at www.uddi.org/. Service providers may register their services in a UDDI, specifying technical information about how to invoke the service.
The discovery and organization of services is typically a manual process, i.e., the burden is typically on the service requesters to locate, organize, and manage multiple contractual relationships. FIG. 1 depicts a conventional environment where service requesters SR1, SR2 develop individual usage contracts to consume specific services S1, S2, . . . Sj, and a service Sk through which services Sk1, Sk2, . . . Skm are provided. In such an environment, everything, i.e., the service instances, contracts, and bindings, etc., is specifically identified up front regardless of the scope of services.
A potential limitation of this approach is its static nature, which can reduce the flexibility that is generally desired for e-business application. For example, in such a conventional environment, a new service typically cannot be utilized until it has gone through the full publication process, and requesters have re-subscribed contracts and regenerated their stub codes.
Recently, flexible approaches have been developed based on the concept of a “service grid,” wherein multiple instances of similar capability in nature can be grouped as one service representation. Service grid approaches are generally described in a series of articles “Business Service Grid, Part 1: Introduction,” “Business Service Grid, Part 2: Implementing a Business Service Grid”, and “Business Service Grid, Part 3: Setting Up Rules,” published in February and April of 2003 by IBM on the World Wide Web at www.106.ibm.com/developerworks/ibm/library/i-servicegrid/, www.106.ibm.com/developerworks/ibm/library/i-servicegrid2/, and www.106.ibm.com/developerworks/ibm/library/i-servicegrid3/, respectively. U.S. patent application Ser. No. 10/298,962, entitled “System, Method and Program Product for Operating a Grid of Service Providers Based on a Service Policy,” filed Nov. 18, 2002, also describes other service domain concepts.